package com.lhd.tool;

import org.apache.commons.lang3.RandomStringUtils;

/**
 *
 * <p>
 * 生成String样式的字符串
 *
 * @author MapLover
 * @since 2020.09
 */
public class StringTool {

	private static enum SexEnum {
		M, F;
	}

	// private Integer i=0;

	private ThreadLocal<Integer> SEQ = new ThreadLocal<Integer>() {
		protected Integer initialValue() {
			return 0;
		};
	};

	/*
	 * @Override public void run() { Thread t = Thread.currentThread(); for (int SEQ
	 * = 0; SEQ < 10; SEQ++) { System.out.println(t.getName() + "\t" + SEQ); }
	 * 
	 * }
	 */

	/**
	 * 
	 * @param s       被补全字符
	 * @param n       位数
	 * @param replace 使用该字符补全
	 * @return 左补全后字符串
	 */
	public String lpad(String s, int n, String replace) {
		while (s.length() < n) {
			s = replace + s;
		}
		return s;
	}

	/**
	 * 
	 * @param s       被补全字符
	 * @param n       位数
	 * @param replace 使用该字符补全
	 * @return 右补全后字符串
	 */
	public String rpad(String s, int n, String replace) {
		while (s.length() < n) {
			s = s + replace;
		}
		return s;
	}

	/**
	 * 
	 * @param length 字符串长度
	 * @return 生成随机[a-z]字符串，小写
	 */
	public String getRandomString(int length) {
		return RandomStringUtils.randomAlphabetic(length).toLowerCase();
	}

	/**
	 *
	 * @param length 字符串长度
	 * @return 生成随机[a-z]字符串，大写
	 */
	public String getRandomBigString(int length) {
		return RandomStringUtils.randomAlphabetic(length).toUpperCase();
	}

	/**
	 * 
	 * @param length 字符串长度
	 * @return 数字和字母混合的随机串
	 */
	public String getRandomAlphanumeric(int length) {

		return RandomStringUtils.randomAlphanumeric(length);
	}

	/**
	 *
	 * @param length 字符串长度
	 * @return 数字随机串
	 */
	public String getRandomNumeric(int length) {

		return RandomStringUtils.randomNumeric(length);
	}

	/**
	 * 
	 * @param length 字符串长度
	 * @return 序列值（各线程独立）
	 */
	public synchronized String getSeqnumeric(int length) {
		Integer I = new Integer(SEQ.get().intValue() + 1);
		SEQ.set(I);
		String sSEQ = SEQ.get().toString();
		return lpad(String.valueOf(sSEQ), length, "0");

		// return getRandomString(1)+lpad(String.valueOf(sSEQ), length-1, "0");
	}

	/**
	 * 
	 * @param length 字符串长度
	 * @return 随机数字串
	 */
	public String getRandomNumber(int length) {
		return RandomStringUtils.randomNumeric(length);
	}

	/**
	 * 
	 * @return 随机性别M/F
	 */
	public String getSex() {

		int randomint = 1 + (int) (2 * Math.random());
		// System.out.println("随机数："+randomint);
		String rs = "";
		switch (randomint) {

		case 1:
			rs += SexEnum.F;
			break;
		case 2:
			rs += SexEnum.M;
			break;
		}

		return rs;

	}

}
